Flink 搭建 您所在的位置:网站首页 flink jar包提交任务到远程集群 Flink 搭建

Flink 搭建

2023-06-15 18:13| 来源: 网络整理| 查看: 265

Flink 搭建 - Flink On Yarn 集群模式 什么是 FLINK ON YARN安装部署三种部署模式的介绍和区别启动测试(Application Mode | 应用模式)启动测试(Session Mode | 会话模式)启动测试(Per-Job Mode |Job分离模式)

Apache Flink 1.14 Documentation

2022-04-29 更新,在 Hadoop-2.7.5 版本的 Yarn 环境部署 FLINK-1.13.6

什么是 FLINK ON YARN

FLINK 应用的发布及执行方式非常丰富,本篇博客主要讲述 FLINK ON YARN 这种方式

Apache Hadoop YARN 是 Hadoop 的资源管理器,Flink 实现了 YARN 的任务提交及执行接口,所以我们可以把 FLINK 任务发布在 YARN 上,由 YARN 来完成 FLINK 任务在 YARN 上执行期间的资源调度和管理

Flink 可以根据 JobManager 上运行的作业所需的处理槽数动态分配和取消分配 TaskManager 资源

安装部署

① HADOOP 的版本为 2.4.1+

② 下载 FLINK- 1.13.1

③ 配置 HADOOP_CLASSPATH 环境变量

vim /etc/profile # 增加该内容 export HADOOP_CLASSPATH=`hadoop classpath` # 刷新环境变量 source /etc/profile

④ 上传解压

cd /opt/server tar -zxvf flink-1.13.1-bin-scala_2.11.tgz ln -s /opt/server/flink-1.10.0 /opt/server/flink

⑤ 修改 /yarn-site.xml (3 台都操作)

vim /opt/server/hadoop/etc/hadoop/yarn-site.xml # 修改以下内容 yarn.nodemanager.pmem-check-enabled false yarn.nodemanager.vmem-check-enabled false 三种部署模式的介绍和区别

For production use, we recommend deploying Flink Applications in the Per-job or Application Mode, as these modes provide a better isolation for the Applications.

注意:在生产中建议使用 Per-job 或 Application Mode 模式部署 Flink 应用程序,这些模式为应用程序提供了更好的隔离. 一个任务启动一个Flink集群, 各个 Flink 集群之间独立运行, 互不影响, 而且每个集群可以单独进行配置

① Application Mode (应用模式)

# 特点 每次递交作业都需要申请一次资源 # 优点 1. main 方法在集群中执行, 不是执行在客户端 2. 运行时所需的依赖项, 并生成 JobGraph 都在Yarn集群中执行, 有效减少客户端带宽、性能的消耗, 从而防止客户端压力过大 3. 允许应用程序包含多个Job, 多个Job顺序执行

② Per-Mode (Job 分离模式)

# 特点 每次递交作业都需要申请一次资源 # 优点 1. 作业运行完成, 资源会立刻被释放, 不会一直占用系统资源 2. 每个作业都是一个Flink集群, 不同资源之间做到了很好的资源隔离, 且不同的作业可以进行单独的配置 # 缺点 1. 每次递交作业都需要申请资源, 会影响执行效率, 因为申请资源需要消耗时间 2. main 方法在客户端执行, 在客户端提交给 JobManager # 应用场景 适合作业比较少的场景、大作业的场景

② Session Mode(会话模式)

# 特点 所有作业共享集群资源 # 优点 根据指定的资源参数初始化一个Flink集群,资源只需要一次申请 # 缺点 1. 隔离性差, JM 负载瓶颈 2. main 方法在客户端执行 # 应用场景 对延迟非常敏感但运行时长较短的作业

③ Per-Job Mode(Job 分离模式)

启动测试(Application Mode | 应用模式)

该模式将在 YARN 上启动 Flink 集群,其中应用程序 jar 的 main() 方法在 YARN 中的 JobManager 上执行, 应用程序完成后,集群将立即关闭

使用 yarn application -kill 或取消 Flink 作业来手动停止集群

# 常用的启动命令, 启动后会得到一个 applicatid ./bin/flink run-application \ -t yarn-application \ -yjm 1024 \ -ytm 1024 \ -d \ -c org.apache.flink.streaming.examples.socket.SocketWindowWordCount \ examples/streaming/SocketWindowWordCount.jar \ --port 9000 # 列出运行在集群中的任务(通过 -Dyarn.application.id 可以查看指定 application.id 中执行的 Job) ./bin/flink list \ -t yarn-application \ -Dyarn.application.id=application_XXXX_YY # 取消job ./bin/flink cancel \ -t yarn-application \ -Dyarn.application.id=application_XXXX_YY

注意:在应用集群中取消 JOB 会使整个集群停止

为了让整个应用得到更快的响应,我们可以把 jar 等文件上传到指定的 HDFS 路径,这样应用在执行的时候可以直接从指定的路径获取,而不是从 client 上传

./bin/flink run-application -t yarn-application \ -Dyarn.provided.lib.dirs="hdfs://myhdfs/my-remote-flink-dist-dir" \ hdfs://myhdfs/jars/my-application.jar

② Per-Job Mode(Job 分离模式)

启动测试(Session Mode | 会话模式)

会话模式有两种操作模式

# attached mode(默认) yarn-session.sh 客户端将 Flink 集群提交给 YARN, 但客户端一直在运行, 不会退出 如果集群失败, 客户端将显示错误; 如果客户端被终止, 它也会发出集群关闭的信号 # detached mode (-d or --detached) yarn-session.sh 客户端将 Flink 集群提交给 YARN,然后客户端返回并退出 需要再次调用客户端或 YARN 工具来停止 Flink 集群

注意:会话模式将在 /tmp/.yarn-properties- 中创建一个隐藏的 YARN 属性文件,该文件将在提交作业时被命令行界面用于集群发现。

注意:除了通过 conf/flink-conf.yaml 文件传递配置外,您还可以在提交时使用 -Dkey=value 参数将任何配置传递给 ./bin/yarn-session.sh 客户端

① 启动 Flink 会话(任意一台都操作)

cd /opt/server/flink # 启动命令 ./bin/yarn-session.sh \ -yjm 1024 \ -ytm 1024 \ -d

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

② 如果我们想重新通过客户端回到会话中,我们可以使用这个命令

# 格式 ./bin/yarn-session.sh -id application_XXXX_YY # 示例 ./bin/yarn-session.sh -id application_1646190502615_0097

在这里插入图片描述

③ 使用 Flink 提交任务(任意一台都操作)

注意:此时提交的任务都通过该会话(Session)执行,不会再申请 yarn 资源

# 我们在提交 Flink 作业时在命令行界面中手动指定目标 YARN 集群 ./bin/flink run \ -t yarn-session \ -Dyarn.application.id=application_1646190502615_0098 \ -d \ -c org.apache.flink.streaming.examples.socket.SocketWindowWordCount \ examples/streaming/SocketWindowWordCount.jar \ --port 9000

在这里插入图片描述

注意:提交 Job 也可以通过 WEB-UI 界面提交任务

在这里插入图片描述 在这里插入图片描述

④ 关闭指定的 Job

在这里插入图片描述

⑤ 关闭 Session

yarn application -kill application_XXXX_YY 启动测试(Per-Job Mode |Job分离模式)

Per-job Cluster 模式会在 YARN 上启动一个 Flink 集群,然后在本地运行提供的应用程序 jar,最后将 JobGraph 提交到 YARN 上的 JobManager。 如果传递 --detached 参数,一旦提交被接受,客户端将停止

注意:部署 Per-Job 集群后,可以与其交互以执行取消或获取检查点等操作

① 直接提交 Job

./bin/flink run \ -t yarn-per-job \ -yjm 1024 \ -ytm 1024 \ -d \ -c org.apache.flink.streaming.examples.socket.SocketWindowWordCount \ examples/streaming/SocketWindowWordCount.jar \ --port 9000

在这里插入图片描述

② 查看 yarn application 页面

在这里插入图片描述 ③ 查看 WEB 界面

在这里插入图片描述

④ 列出运行的 Job

# 列出运行的 Job, 需要指定 application id ./bin/flink list \ -t yarn-per-job \ -Dyarn.application.id=application_1646190502615_0089

在这里插入图片描述

⑤ 取消运行的 Job

# 命令格式 ./bin/flink cancel \ -t yarn-per-job \ -Dyarn.application.id=application_XXXX_YY # 示例 ./bin/flink cancel \ -t yarn-per-job \ -Dyarn.application.id=application_1646190502615_0089 e31dd638510431fa579c7eaa9890961c

在这里插入图片描述 注意:取消 Job 后, 我们会发现, 整个 application 都停止了, 所以对应的集群也停止了 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有